//@author A0096794H
//This is the parent class for the other task classes
#ifndef _TASK_H_
#define _TASK_H_

#include <sstream>
#include <string>
#include "constants.h"
using namespace std;

#define NUM_TASK_TYPES 3

class Task
{
protected:
	string description;
	int taskParameterCounter;
	TaskType type;
	bool done;
public:
	Task(string);
	string getDescription();
	TaskType getTaskType();
	ResultType setDescription(string);
	bool markDone();
	bool markUndone();
	bool isDone();
	void saveDoneOrNotDone(stringstream &);
	int getTaskParameterCounter();
	virtual string stringify() = 0;
	virtual string format() = 0;
};

#endif